package com.jctrip.hotel.source.model.elong.resp.offline;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Author: zxy
 * @CreateTime: 2023-09-22 10:55
 * @Description:
 */
@Data
public class ElongQueryOrderDetailResp implements Serializable {
    @JsonProperty("OrderId")
    @ApiModelProperty(value = "订单编号")
    private Long orderId;

    @JsonProperty("HotelId")
    @ApiModelProperty(value = "酒店编号")
    private String hotelId;

    @JsonProperty("HotelName")
    @ApiModelProperty(value = "酒店名称")
    private String hotelName;

    @JsonProperty("RoomId")
    @ApiModelProperty(value = "房型编号")
    private String roomId;

    @JsonProperty("RoomName")
    @ApiModelProperty(value = "房型名称")
    private String roomName;

    @JsonProperty("RoomTypeId")
    @ApiModelProperty(value = "销售房型编号")
    private String roomTypeId;

    @JsonProperty("RoomTypeName")
    @ApiModelProperty(value = "销售房型名称")
    private String roomTypeName;

    @JsonProperty("RatePlanId")
    @ApiModelProperty(value = "产品编号")
    private Integer ratePlanId;

    @JsonProperty("RatePlanName")
    @ApiModelProperty(value = "产品名称")
    private String ratePlanName;

    @JsonProperty("ArrivalDate")
    @ApiModelProperty(value = "入住日期")
    private String arrivalDate;

    @JsonProperty("DepartureDate")
    @ApiModelProperty(value = "离店日期")
    private String departureDate;

    @JsonProperty("Status")
    @ApiModelProperty(value = "订单状态")
    private String status;

    @JsonProperty("ShowStatus")
    @ApiModelProperty(value = "对用户展示的订单状态")
    private Long showStatus;

    @JsonProperty("ConfirmPoint")
    @ApiModelProperty(value = "下一次确认反馈时间点")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date confirmPoint;

    @JsonProperty("CustomerType")
    @ApiModelProperty(value = "客人类型")
    private String customerType;

    @JsonProperty("PaymentType")
    @ApiModelProperty(value = "付款类型")
    private String paymentType;

    @JsonProperty("NumberOfRooms")
    @ApiModelProperty(value = "房间数量")
    private Integer numberOfRooms;

    @JsonProperty("NumberOfCustomers")
    @ApiModelProperty(value = "客人数量")
    private Integer numberOfCustomers;

    @JsonProperty("EarliestArrivalTime")
    @ApiModelProperty(value = "最早到店时间")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date earliestArrivalTime;

    @JsonProperty("LatestArrivalTime")
    @ApiModelProperty(value = "最晚到店时间")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date latestArrivalTime;

    @JsonProperty("CurrencyCode")
    @ApiModelProperty(value = "货币类型")
    private String currencyCode;

    @JsonProperty("TotalPrice")
    @ApiModelProperty(value = "总价")
    private BigDecimal totalPrice;

    @JsonProperty("ElongCardNo")
    @ApiModelProperty(value = "艺龙会员卡号")
    private String elongCardNo;

    @JsonProperty("ConfirmationType")
    @ApiModelProperty(value = "确认类型")
    private String confirmationType;

    @JsonProperty("NoteToHotel")
    @ApiModelProperty(value = "给酒店备注")
    private String noteToHotel;

    @JsonProperty("NoteToElong")
    @ApiModelProperty(value = "给艺龙备注")
    private String noteToElong;

    @JsonProperty("NoteToGuest")
    @ApiModelProperty(value = "给客人的备注")
    private String noteToGuest;

    @JsonProperty("PenaltyToCustomer")
    @ApiModelProperty(value = "订单产生的罚金")
    private BigDecimal penaltyToCustomer;

    @JsonProperty("PenaltyCurrencyCode")
    @ApiModelProperty(value = "罚金货币类型")
    private String penaltyCurrencyCode;

    @JsonProperty("IsRefund")
    @ApiModelProperty(value = "是否可退款")
    private Boolean isRefund;

    @JsonProperty("CreationDate")
    @ApiModelProperty(value = "预订时间")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date creationDate;

    @JsonProperty("IsCancelable")
    @ApiModelProperty(value = "当前是否可以取消")
    private Boolean isCancelable;

    @JsonProperty("CancelTime")
    @ApiModelProperty(value = "最晚取消时间")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date cancelTime;

    @JsonProperty("HasInvoice")
    @ApiModelProperty(value = "是否有发票信息")
    private Boolean hasInvoice;

    @JsonProperty("SupportAnticipation")
    @ApiModelProperty(value = "产品是否支持开专票")
    private String supportAnticipation;

    @JsonProperty("Invoice")
    @ApiModelProperty(value = "发票")
    private Invoice invoice;

    @JsonProperty("DayPromotions")
    @ApiModelProperty(value = "臻选特惠促销信息")
    private List<DayPromotion> dayPromotions;

    @JsonProperty("UsedPromotionDayRoomValues")
    @ApiModelProperty(value = "同程促销促销信息")
    private List<OrderDetailDayRoomPromotion> usedPromotionDayRoomValues;

    @JsonProperty("Contact")
    @ApiModelProperty(value = "联系人")
    private Contact contact;

    @JsonProperty("CreditCard")
    @ApiModelProperty(value = "信用卡")
    private CreditCard creditCard;

    @JsonProperty("NightlyRates")
    @ApiModelProperty(value = "每夜价格")
    private List<NightlyRate> nightlyRates;

    @JsonProperty("ExtendInfo")
    @ApiModelProperty(value = "扩展信息")
    private ExtendInfo extendInfo;

    @JsonProperty("OrderRooms")
    @ApiModelProperty(value = "房间信息")
    private List<OrderRoom> orderRooms;

    @JsonProperty("GuaranteeRule")
    @ApiModelProperty(value = "担保规则")
    private ElongQueryHotelRpResp.GuaranteeRule guaranteeRule;

    @JsonProperty("PrepayRule")
    @ApiModelProperty(value = "预付规则")
    private ElongQueryHotelRpResp.PrepayRule prepayRule;

    @JsonProperty("PrepayResult")
    @ApiModelProperty(value = "预付结果")
    private PrepayResult prepayResult;

    @JsonProperty("GuaranteeResult")
    @ApiModelProperty(value = "担保结果")
    private GuaranteeResult guaranteeResult;

    @JsonProperty("RefundDetail")
    @ApiModelProperty(value = "多次退款详情")
    private RefundDetail refundDetail;

    @JsonProperty("ValueAdds")
    @ApiModelProperty(value = "增值服务")
    private List<String> valueAdds;

    @JsonProperty("GiftPackages")
    @ApiModelProperty(value = "礼包套餐")
    private List<GiftPackage> giftPackages;

    @JsonProperty("InvoiceMode")
    @ApiModelProperty(value = "预付订单的发票开具模式")
    private String invoiceMode;

    @JsonProperty("TotalCostPriceExchanged")
    @ApiModelProperty(value = "换算为人民币的订单总底价")
    private BigDecimal totalCostPriceExchanged;

    @JsonProperty("IsInstantConfirm")
    @ApiModelProperty(value = "是否及时确认")
    private Boolean isInstantConfirm;

    @JsonProperty("AffiliateConfirmationId")
    @ApiModelProperty(value = "代理自己的订单号")
    private String affiliateConfirmationId;

    @JsonProperty("OrderHotel")
    @ApiModelProperty(value = "订单关联的酒店信息")
    private OrderHotel orderHotel;

    @JsonProperty("RefundAmount")
    @ApiModelProperty(value = "预付订单线下退款金额")
    private BigDecimal refundAmount;

    @JsonProperty("CustomerPrice")
    @ApiModelProperty(value = "销售给客人的最终价格")
    private BigDecimal customerPrice;

    @JsonProperty("payAmount")
    @ApiModelProperty(value = "实际支付金额")
    private BigDecimal payAmount;

    @JsonProperty("HourRoom")
    @ApiModelProperty(value = "是否为钟点房")
    private Boolean hourRoom;

    @JsonProperty("HourRoomStartTime")
    @ApiModelProperty(value = "钟点房入住开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date hourRoomStartTime;

    @JsonProperty("HourRoomEndTime")
    @ApiModelProperty(value = "钟点房入住结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private Date hourRoomEndTime;

    @JsonProperty("Meals")
    @ApiModelProperty(value = "餐食信息")
    private List<DayMeal> meals;

    @JsonProperty("SpecialCancelApply")
    @ApiModelProperty(value = "特殊取消申请")
    private Boolean specialCancelApply;

    @JsonProperty("Breakfast")
    @ApiModelProperty(value = "早餐")
    private String breakfast;

    @JsonProperty("BasePrepayRule")
    @ApiModelProperty(value = "基础预付规则")
    private BasePrepayRule basePrepayRule;

    @JsonProperty("SupplierId")
    @ApiModelProperty(value = "供应商id")
    private String supplierId;

    @JsonProperty("SubSupplierId")
    @ApiModelProperty(value = "二级供应商id")
    private String subSupplierId;

    @JsonProperty("SpecificRemark")
    @ApiModelProperty(value = "特殊要求")
    private String specificRemark;

    @JsonProperty("TaxAndService")
    @ApiModelProperty(value = "税和服务费原币种")
    private BigDecimal taxAndService;

    @JsonProperty("TaxAndServiceRMB")
    @ApiModelProperty(value = "税和服务费人民币币种")
    private BigDecimal taxAndServiceRMB;

    @JsonProperty("ExtraPersonFeeRMB")
    @ApiModelProperty(value = "额外人员费用(附加费人民币)")
    private BigDecimal extraPersonFeeRMB;

    @JsonProperty("CheckInInstructions")
    @ApiModelProperty(value = "入住需知")
    private String checkInInstructions;

    @JsonProperty("BedDescription")
    @ApiModelProperty(value = "床型描述")
    private String bedDescription;

    @JsonProperty("BoardInfo")
    @ApiModelProperty(value = "膳食信息")
    private BoardInfo boardInfo;

    @JsonProperty("OccupancyPerRoom")
    @ApiModelProperty(value = "房间最大可住成人数")
    private Integer occupancyPerRoom;

    @JsonProperty("ChildrenOccupancyPerRoom")
    @ApiModelProperty(value = "房间最大可住儿童数")
    private Integer childrenOccupancyPerRoom;

    @JsonProperty("NumberOfAdults")
    @ApiModelProperty(value = "成人数")
    private Integer numberOfAdults;

    @JsonProperty("ChildAges")
    @ApiModelProperty(value = "儿童年龄")
    private List<Integer> childAges;

    @JsonProperty("IsCancelBeforeConfirmation")
    @ApiModelProperty(value = "是否经历过确认前取消")
    private Boolean isCancelBeforeConfirmation;

    @JsonProperty("InternetType")
    @ApiModelProperty(value = "网络类型")
    private String internetType;

    @JsonProperty("InternetDesc")
    @ApiModelProperty(value = "上网描述")
    private String internetDesc;

    @JsonProperty("BedTypeId")
    @ApiModelProperty(value = "床型id")
    private String bedTypeId;

    @JsonProperty("Internet")
    @ApiModelProperty(value = "网络")
    private String internet;

    @JsonProperty("AdditionalTax")
    @ApiModelProperty(value = "另付税和服务费")
    private AdditionalTax additionalTax;

    @Data
    public static class AdditionalTax implements Serializable {
        @JsonProperty("TotalAmountRmb")
        @ApiModelProperty(value = "另付税和服务费总额")
        public BigDecimal totalAmountRmb;

        @JsonProperty("AdditionalTaxItems")
        @ApiModelProperty(value = "另付税和服务费明细")
        public List<AdditionalTaxItem> additionalTaxItems;
    }

    @Data
    public static class AdditionalTaxItem implements Serializable {
        @JsonProperty("Description")
        @ApiModelProperty(value = "另付税和服务费明细描述")
        public String description;

        @JsonProperty("Amount")
        @ApiModelProperty(value = "另付税和服务费明细金额")
        public BigDecimal amount;
    }

    @Data
    public static class BoardInfo implements Serializable {
        @JsonProperty("IsBreakfastIncluded")
        @ApiModelProperty(value = "是否包含早餐")
        public Boolean isBreakfastIncluded;

        @JsonProperty("HalfBoardIncluded")
        @ApiModelProperty(value = "是否半膳")
        public Boolean halfBoardIncluded;

        @JsonProperty("FullBoardIncluded")
        @ApiModelProperty(value = "是否全膳")
        public Boolean fullBoardIncluded;

        @JsonProperty("BoardDesc")
        @ApiModelProperty(value = "膳食描述")
        public String boardDesc;

        @JsonProperty("BoardDetails")
        @ApiModelProperty(value = "膳食明细")
        public List<BoardDetail> boardDetails;
    }

    @ApiModel(value = "PrepayResult")
    @Data
    public static class PrepayResult implements Serializable {

        @ApiModelProperty(value = "取消规则", required = true)
        @JsonProperty(value = "CancelDescription")
        private String cancelDescription;

        @ApiModelProperty(value = "取消规则明细", required = true)
        @JsonProperty(value = "LadderParseList")
        private List<LadderParse> ladderParseList;
    }

    @ApiModel(value = "GuaranteeResult")
    @Data
    public static class GuaranteeResult implements Serializable {

        @ApiModelProperty(value = "取消规则", required = true)
        @JsonProperty(value = "CancelDescription")
        private String cancelDescription;

        @ApiModelProperty(value = "是否需要担保", required = true)
        @JsonProperty(value = "NeedGuarantee")
        private Boolean needGuarantee;

        @ApiModelProperty(value = "担保的金额", required = false)
        @JsonProperty(value = "GuaranteeMoney")
        private Double guaranteeMoney;

        @ApiModelProperty(value = "取消规则明细", required = false)
        @JsonProperty(value = "LadderParseList")
        private List<LadderParse> ladderParseList;
    }

    @Data
    public static class LadderParse implements Serializable {
        @JsonProperty("BeginTime")
        @ApiModelProperty(value = "开始时间")
        public Long beginTime;

        @JsonProperty("EndTime")
        @ApiModelProperty(value = "结束时间")
        public Long endTime;

        @JsonProperty("CutType")
        @ApiModelProperty(value = "扣费类型")
        public Integer cutType;

        @JsonProperty("CutValue")
        @ApiModelProperty(value = "扣费值（原始币种）")
        public BigDecimal cutValue;

        @JsonProperty("Amount")
        @ApiModelProperty(value = "扣费值")
        public BigDecimal amount;

        @JsonProperty("ShortDesc")
        @ApiModelProperty(value = "短文案")
        public String shortDesc;

        @JsonProperty("AmountRmb")
        @ApiModelProperty(value = "扣费值（人民币）")
        public BigDecimal amountRmb;

        @JsonProperty("ExchangeRate")
        @ApiModelProperty(value = "汇率")
        public BigDecimal exchangeRate;
    }

    @Data
    public static class Invoice implements Serializable {
        @JsonProperty("InvoiceType")
        @ApiModelProperty("发票类型")
        public String invoiceType;

        @JsonProperty("TitleType")
        @ApiModelProperty("发票抬头类型")
        public String titleType;

        @JsonProperty("Title")
        @ApiModelProperty("发票抬头")
        public String title;

        @JsonProperty("ITIN")
        @ApiModelProperty("纳税人识别号")
        public String itin;

        @JsonProperty("ItemName")
        @ApiModelProperty("费用名称")
        public String itemName;

        @JsonProperty("Amount")
        @ApiModelProperty("发票金额")
        public BigDecimal amount;

        @JsonProperty("Recipient")
        @ApiModelProperty("收件人信息")
        public Recipient recipient;

        @JsonProperty("IsNeedRelationOrder")
        @ApiModelProperty("是否需要关联订单")
        public Boolean isNeedRelationOrder;

        @JsonProperty("MemoInfo")
        @ApiModelProperty("备注信息")
        public String memoInfo;

        @JsonProperty("Status")
        @ApiModelProperty("发票状态")
        public Boolean status;

        @JsonProperty("DeliveryStatus")
        @ApiModelProperty("发票邮寄状态")
        public Boolean deliveryStatus;

        @JsonProperty("ProcessType")
        @ApiModelProperty("处理类型")
        public Integer processType;

        @JsonProperty("ProcessStatus")
        @ApiModelProperty("处理状态")
        public Integer processStatus;

        @JsonProperty("UrlForPDF")
        @ApiModelProperty("发票 PDF 文件链接")
        public String urlForPDF;

        @JsonProperty("UrlForWeixinCard")
        @ApiModelProperty("微信卡券链接")
        public String urlForWeixinCard;

        @JsonProperty("InvCode")
        @ApiModelProperty("发票代码")
        public String invCode;

        @JsonProperty("InvNumber")
        @ApiModelProperty("发票号码")
        public String invNumber;

        @JsonProperty("BillNumber")
        @ApiModelProperty("账单号码")
        public String billNumber;

        @JsonProperty("TaxPayerNum")
        @ApiModelProperty("纳税人登记证号")
        public String taxPayerNum;

        @JsonProperty("TaxRegisterBank")
        @ApiModelProperty("纳税人开户行")
        public String taxRegisterBank;

        @JsonProperty("RegisterBankNum")
        @ApiModelProperty("纳税人账号")
        public String registerBankNum;

        @JsonProperty("RegisterAddress")
        @ApiModelProperty("纳税人地址")
        public String registerAddress;

        @JsonProperty("RegisterPhoneNum")
        @ApiModelProperty("纳税人电话")
        public String registerPhoneNum;
    }

    @Data
    public static class Recipient implements Serializable {
        @JsonProperty("Province")
        @ApiModelProperty("省份")
        public String province;

        @JsonProperty("City")
        @ApiModelProperty("城市")
        public String city;

        @JsonProperty("District")
        @ApiModelProperty("行政区")
        public String district;

        @JsonProperty("Street")
        @ApiModelProperty("街道")
        public String street;

        @JsonProperty("PostalCode")
        @ApiModelProperty("邮编")
        public String postalCode;

        @JsonProperty("Name")
        @ApiModelProperty("收件人姓名")
        public String name;

        @JsonProperty("Phone")
        @ApiModelProperty("电话")
        public String phone;

        @JsonProperty("Email")
        @ApiModelProperty("Email")
        public String email;
    }

    @Data
    public static class DayPromotion implements Serializable {
        @JsonProperty("Date")
        @ApiModelProperty("日期")
        public String date;

        @JsonProperty("Promotions")
        @ApiModelProperty("促销信息")
        public List<Promotion> promotions;
    }

    @Data
    public static class Promotion implements Serializable {
        @JsonProperty("PriceDiscountValue")
        @ApiModelProperty("卖价优惠的金额")
        public BigDecimal priceDiscountValue;

        @JsonProperty("PromotionTag")
        @ApiModelProperty("促销名称")
        public String promotionTag;

        @JsonProperty("PromotionId")
        @ApiModelProperty("ID")
        public Long promotionId;

        @JsonProperty("PromotionType")
        @ApiModelProperty("促销类型")
        public Integer promotionType;
    }

    @Data
    public static class OrderDetailDayRoomPromotion implements Serializable {
        @JsonProperty("StayDate")
        @ApiModelProperty("促销日期")
        public String stayDate;

        @JsonProperty("PromotionDayRoom")
        @ApiModelProperty("促销日明细")
        public List<PromotionDayRoom> promotionDayRoom;
    }

    @Data
    public static class PromotionDayRoom implements Serializable {
        @JsonProperty("RoomNumber")
        @ApiModelProperty("房间编号")
        public String roomNumber;

        @JsonProperty("PromotionDetailList")
        @ApiModelProperty("促销明细")
        public List<PromotionDayRoomItem> promotionDetailList;
    }

    @Data
    public static class PromotionDayRoomItem implements Serializable {
        @JsonProperty("Amount")
        @ApiModelProperty("促销金额")
        public BigDecimal amount;

        @JsonProperty("PromotionType")
        @ApiModelProperty("促销类型")
        public Integer promotionType;
    }

    @Data
    public static class Contact implements Serializable {
        @JsonProperty("Name")
        @ApiModelProperty(value = "姓名", required = true)
        public String name;

        @JsonProperty("Email")
        @ApiModelProperty("Email")
        public String email;

        @JsonProperty("Mobile")
        @ApiModelProperty("手机")
        public String mobile;

        @JsonProperty("Phone")
        @ApiModelProperty("电话")
        public String phone;

        @JsonProperty("Fax")
        @ApiModelProperty("传真")
        public String fax;

        @JsonProperty("Gender")
        @ApiModelProperty("性别")
        public String gender;

        @JsonProperty("IdType")
        @ApiModelProperty("证件类型")
        public String idType;

        @JsonProperty("IdNo")
        @ApiModelProperty("证件号码")
        public String idNo;

        @JsonProperty("FirstName")
        @ApiModelProperty("名")
        public String firstName;

        @JsonProperty("LastName")
        @ApiModelProperty("姓")
        public String lastName;
    }

    @Data
    public static class CreditCard implements Serializable {
        @JsonProperty("ProcessType")
        @ApiModelProperty(value = "交易类型", required = true)
        public String processType;

        @JsonProperty("Status")
        @ApiModelProperty(value = "交易状态", required = true)
        public String status;

        @JsonProperty("Amount")
        @ApiModelProperty("交易金额")
        public BigDecimal amount;

        @JsonProperty("Notes")
        @ApiModelProperty("备注或失败原因")
        public String notes;

        @JsonProperty("IsPayable")
        @ApiModelProperty("是否可以继续支付")
        public Boolean isPayable;

        @JsonProperty("LatestPayTime")
        @ApiModelProperty("最晚支付时间")
        public String latestPayTime;
    }

    @Data
    public static class NightlyRate implements Serializable {
        @JsonProperty("Date")
        @ApiModelProperty(value = "日期", required = true)
        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
        public Date date;

        @JsonProperty("Member")
        @ApiModelProperty(value = "会员卖价", required = true)
        public BigDecimal member;

        @JsonProperty("Cost")
        @ApiModelProperty("结算价")
        public BigDecimal cost;

        @JsonProperty("BreakfastCount")
        @ApiModelProperty("早餐数量")
        public Integer breakfastCount;

        @JsonProperty("TaxAndServiceFee")
        @ApiModelProperty("税和服务费原币种")
        public BigDecimal taxAndServiceFee;

        @JsonProperty("TaxAndServiceFeeRMB")
        @ApiModelProperty("税和服务费人民币币种")
        public BigDecimal taxAndServiceFeeRMB;

        @JsonProperty("roomRate")
        @ApiModelProperty("房价")
        public BigDecimal roomRate;
    }

    @Data
    public static class ExtendInfo implements Serializable {
        @JsonProperty("String1")
        @ApiModelProperty("字符串字段1")
        public String string1;

        @JsonProperty("String2")
        @ApiModelProperty("字符串字段2")
        public String string2;

        @JsonProperty("String3")
        @ApiModelProperty("字符串字段3")
        public String string3;

        @JsonProperty("Int1")
        @ApiModelProperty("整数字段1")
        public Integer int1;

        @JsonProperty("Int2")
        @ApiModelProperty("整数字段2")
        public Integer int2;

        @JsonProperty("Int3")
        @ApiModelProperty("整数字段3")
        public Integer int3;

        @JsonProperty("PartnerParameter")
        @ApiModelProperty("合作伙伴参数")
        public String partnerParameter;
    }

    @Data
    public static class OrderRoom implements Serializable {
        @JsonProperty("Customers")
        @ApiModelProperty(value = "客人信息", required = true)
        public List<Customer> customers;

        @JsonProperty("RoomNo")
        @ApiModelProperty("入住房间号")
        public String roomNo;
    }

    @Data
    public static class Customer implements Serializable {
        @JsonProperty("Name")
        @ApiModelProperty(value = "姓名", required = true)
        public String name;

        @JsonProperty("Email")
        @ApiModelProperty("Email")
        public String email;

        @JsonProperty("Mobile")
        @ApiModelProperty("手机")
        public String mobile;

        @JsonProperty("Phone")
        @ApiModelProperty("电话")
        public String phone;

        @JsonProperty("Fax")
        @ApiModelProperty("传真")
        public String fax;

        @JsonProperty("Gender")
        @ApiModelProperty("性别")
        public String gender;

        @JsonProperty("IdType")
        @ApiModelProperty("证件类型")
        public Integer idType;

        @JsonProperty("IdNo")
        @ApiModelProperty("证件号码")
        public String idNo;

        @JsonProperty("Nationality")
        @ApiModelProperty("国籍")
        public String nationality;

        @JsonProperty("ConfirmationNumber")
        @ApiModelProperty("酒店确认号")
        public String confirmationNumber;
    }

    @Data
    public static class OrderHotel implements Serializable {
        @JsonProperty("HotelId")
        @ApiModelProperty(value = "酒店ID", required = true)
        public String hotelId;

        @JsonProperty("Name")
        @ApiModelProperty(value = "酒店名称", required = true)
        public String name;

        @JsonProperty("Address")
        @ApiModelProperty(value = "酒店地址", required = true)
        public String address;

        @JsonProperty("Phone")
        @ApiModelProperty("酒店电话")
        public String phone;

        @JsonProperty("CityName")
        @ApiModelProperty(value = "城市名称", required = true)
        public String cityName;

        @JsonProperty("HotelEnglishName")
        @ApiModelProperty(value = "酒店英文名", required = true)
        public String hotelEnglishName;

        @JsonProperty("HotelCountryName")
        @ApiModelProperty("国家名称")
        public String hotelCountryName;

        @JsonProperty("HotelLatitude")
        @ApiModelProperty("维度")
        public BigDecimal hotelLatitude;

        @JsonProperty("HotelLongitude")
        @ApiModelProperty("经度")
        public BigDecimal hotelLongitude;
    }

    @Data
    public static class BasePrepayRule implements Serializable {
        @JsonProperty("Description")
        @ApiModelProperty("描述")
        public String description;
    }

    @Data
    public static class BoardDetail implements Serializable {
        @JsonProperty("Description")
        @ApiModelProperty("描述")
        public String description;

        @JsonProperty("Count")
        @ApiModelProperty("膳食数量")
        public Integer count;

        @JsonProperty("Type")
        @ApiModelProperty("膳食类型")
        public Integer type;
    }

    @Data
    public static class GiftPackage implements Serializable {
        @JsonProperty("PkgProductId")
        @ApiModelProperty("礼包套餐ID")
        public Long pkgProductId;

        @JsonProperty("PkgType")
        @ApiModelProperty("礼包套餐类型")
        public Integer pkgType;

        @JsonProperty("PkgProductName")
        @ApiModelProperty("礼包套餐名字")
        public String pkgProductName;

        @JsonProperty("RuleDescriptionAdditional")
        @ApiModelProperty("礼包套餐特别说明")
        public String ruleDescriptionAdditional;

        @JsonProperty("Pictures")
        @ApiModelProperty("礼包套餐图片")
        public List<Picture> pictures;

        @JsonProperty("XProducts")
        @ApiModelProperty("X产品列表")
        public List<XProduct> xProducts;
    }

    @Data
    public static class XProduct implements Serializable {
        @JsonProperty("XProductId")
        @ApiModelProperty("X产品ID")
        public Long xProductId;

        @JsonProperty("XProductName")
        @ApiModelProperty("X产品名字")
        public String xProductName;

        @JsonProperty("TypeName")
        @ApiModelProperty("X产品类型")
        public String typeName;

        @JsonProperty("Quantity")
        @ApiModelProperty("X产品数量")
        public String quantity;

        @JsonProperty("ReceptionTimes")
        @ApiModelProperty("X产品接待时间")
        public String receptionTimes;

        @JsonProperty("Capacity")
        @ApiModelProperty("X产品适用人数")
        public String capacity;

        @JsonProperty("BookingPhone")
        @ApiModelProperty("X产品预订电话")
        public String bookingPhone;

        @JsonProperty("AppointPolicy")
        @ApiModelProperty("X产品预订规则")
        public String appointPolicy;
    }

    @Data
    public static class Picture implements Serializable {
        @JsonProperty("ImgIndex")
        @ApiModelProperty("礼包图片顺序")
        public Integer imgIndex;

        @JsonProperty("ImgUrl")
        @ApiModelProperty("礼包图片链接")
        public String imgUrl;
    }

    @Data
    public static class DayMeal implements Serializable {
        @JsonProperty("date")
        @ApiModelProperty(value = "餐食的日期", example = "2021-08-12")
        public String date;

        @JsonProperty("useDynamicMeal")
        @ApiModelProperty(value = "是否使用动态餐食")
        public Boolean useDynamicMeal;

        @JsonProperty("dynamicMealDesc")
        @ApiModelProperty(value = "动态餐食描述")
        public String dynamicMealDesc;

        @JsonProperty("breakfastShare")
        @ApiModelProperty(value = "早餐数量")
        public Integer breakfastShare;

        @JsonProperty("breakfastDesc")
        @ApiModelProperty(value = "早餐描述")
        public String breakfastDesc;

        @JsonProperty("lunchShare")
        @ApiModelProperty(value = "午餐数量")
        public Integer lunchShare;

        @JsonProperty("lunchDesc")
        @ApiModelProperty(value = "午餐描述")
        public String lunchDesc;

        @JsonProperty("dinnerShare")
        @ApiModelProperty(value = "晚餐数量")
        public Integer dinnerShare;

        @JsonProperty("dinnerDesc")
        @ApiModelProperty(value = "晚餐描述")
        public String dinnerDesc;

        @JsonProperty("dayMealDesc")
        @ApiModelProperty(value = "到天餐食描述")
        public String dayMealDesc;
    }

    @Data
    public static class RefundDetail implements Serializable {
        @JsonProperty("refundAmount")
        @ApiModelProperty(value = "总的退款金额")
        public BigDecimal refundAmount;

        @JsonProperty("refundDetails")
        @ApiModelProperty(value = "每笔退款明细")
        public List<Refund> refundDetails;
    }

    @Data
    public static class Refund implements Serializable {
        @JsonProperty("refundAmount")
        @ApiModelProperty(value = "每笔退款金额")
        public Double refundAmount;

        @JsonProperty("refundTime")
        @ApiModelProperty(value = "每笔退款的时间")
        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
        public Date refundTime;
    }
}
